/*
 * @Author: your name
 * @Date: 2021-11-03 19:40:02
 * @LastEditTime: 2021-12-31 11:33:43
 * @LastEditors: Please set LastEditors
 * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 * @FilePath: \vue-antd-admin-new\src\utils\axios-interceptors.js
 */
import Cookie from 'js-cookie'
// 401拦截
// const resp401 = {
//   /**
//    * 响应数据之前做点什么
//    * @param response 响应对象
//    * @param options 应用配置 包含: {router, i18n, store, message}
//    * @returns {*}
//    */
//   onFulfilled(response, options) {
//     const {message} = options
//     if (response.code === 401) {
//       message.error('无此权限')
//     }
//     return response
//   },
//   /**
//    * 响应出错时执行
//    * @param error 错误对象
//    * @param options 应用配置 包含: {router, i18n, store, message}
//    * @returns {Promise<never>}
//    */
//   onRejected(error, options) {
//     const {message} = options
//     const {response} = error
//     if (response.status === 401) {
//       message.error('无此权限')
//     }
//     return Promise.reject(error)
//   }
// }

// const resp403 = {
//   // onFulfilled(response, options) {
//   //   const {message} = options
//   //   if (response.code === 403) {
//   //     message.error('请求被拒绝11')
//   //   }
//   //   return response
//   // },
//   onRejected(error, options) {
//     const {message} = options
//     const {response} = error
//     if (response.status === 403) {
//       message.error('请求被拒绝')
//     }
//     return Promise.reject(error)
//   }
// }


// const resp200 = {
//   onFulfilled(response, options) {
//     const {message} = options
//     if (response.status === 200) {
//       // message.error('请求被拒绝')
//     }
//     // //console.log(response);
//     return response['data']
//   },
// onRejected(error, options) {
//   const {message} = options
//   const {response} = error
//   if (response.status === 200) {
//     message.error('请求被拒绝')
//   }
//   return Promise.reject(error)
// }
// }


// const resp500 = {
//   onFulfilled(response, options) {
//     const {message} = options
//     if (response.status === 500) {
//       message.error('服务器错误123')
//     }
//     // //console.log(response);
//     return response['data']
//   },

//   onRejected(error, options){
//     const {message} = options
//     const {response} = error
//     if (response.status === 500) {
//       message.error('服务器错误')
//      }

//      return Promise.reject(error)
//   }
// }


 function onResolve(response, options) {
    const { message,router } = options
    const responseMessage = response['data']

  if(responseMessage.code == 100){
       message.error({content:responseMessage.message,key:'loading',duration: 2})
    }else if(responseMessage.code == -1){
       message.warning({content:responseMessage.message,key:'loading',duration: 2})
       router.push('/login')
    }

    return responseMessage

  }


  function onRejected(error, options) {
    const { message } = options
    const { response } = error

    switch (response.status) {
      case 400: 
      message.error({
        content: "参数异常",
        key: "loading",
        duration: 2,
       });
        break;
      case 404: 
      message.error({
        content: "找不到该页面",
        key: "loading",
        duration: 2,
       })
        break;

      case 500: message.error({
        content:"服务器异常",
        key: "loading",
        duration: 2,
       });
        break;

      case 504: message.error({
        content:"服务器宕机",
        key: "loading",
        duration: 2,
       });
        break;
      default:
        message.error({
          content:"未知状态码错误",
          key: "loading",
          duration: 2,
         })
        break;
    }
    return Promise.reject(error);
  }





const reqCommon = {
  /**
   * 发送请求之前做些什么
   * @param config axios config
   * @param options 应用配置 包含: {router, i18n, store, message}
   * @returns {*}
   */
  onFulfill(config, options) {
    // const { message } = options
    // const { url, xsrfCookieName } = config


    // console.log(config);
    // console.log(options);
    // config.url =  config.url+'?action='+1
    // //console.log(config);
    // //console.log(options);
    //  loading('导入中',0)

    // loading.show = true
    // message.loading('Action in progress..', 2.5)
    // if (url.indexOf('login') === -1 && xsrfCookieName && !Cookie.get(xsrfCookieName)) {

      // message.warning('认证 token 已过期，请重新登录')

    // }
    return config
  },
  /**
   * 请求出错时做点什么
   * @param error 错误对象
   * @param options 应用配置 包含: {router, i18n, store, message}
   * @returns {Promise<never>}
   */
  onReject(error, options) {
    const { message } = options

    message.error(error.message)
    return Promise.reject(error)
  }
}

export default {
  // request: [reqCommon], // 请求拦截
  // response: [resp401,
  //   resp403,
  //   resp200,
  //   resp500,
  // ], // 响应拦截
  // success:success,
  // erroe:error
  request:reqCommon,
  onResolve,
  onRejected
}
